home *** CD-ROM | disk | FTP | other *** search
/ Champak 141 / (Vol 141) Oct 17 2011.iso / Games / Clueless.swf / scripts / Cutscene / CutsceneState.as < prev    next >
Encoding:
Text File  |  2011-10-17  |  8.3 KB  |  281 lines

  1. package Cutscene
  2. {
  3.    import Common.ResourceManager;
  4.    import Common.SoundManager;
  5.    import Common.SoundObject;
  6.    import flash.display.Bitmap;
  7.    import flash.display.DisplayObject;
  8.    import flash.display.MovieClip;
  9.    import flash.media.Sound;
  10.    import flash.media.SoundChannel;
  11.    import flash.utils.getDefinitionByName;
  12.    
  13.    public class CutsceneState
  14.    {
  15.       
  16.       private static var bgChannel:SoundChannel;
  17.       
  18.       private static var bgSound:Sound;
  19.       
  20.       private static var resource:ResourceManager;
  21.        
  22.       
  23.       private var buffer:Array;
  24.       
  25.       private var bg:String;
  26.       
  27.       private var personOverride:Array;
  28.       
  29.       private var name:String;
  30.       
  31.       private var index:int = 0;
  32.       
  33.       private var currentScene:MovieClip = null;
  34.       
  35.       private var person:Array;
  36.       
  37.       private var decisions:Array;
  38.       
  39.       private var dialogue:Array;
  40.       
  41.       private var bgMusic:String;
  42.       
  43.       private var personZSort:Array;
  44.       
  45.       private var isDialogueBoxInvisible:Boolean;
  46.       
  47.       private var adjustments:Array;
  48.       
  49.       private var defaultResolve:String;
  50.       
  51.       private var isLoop:Boolean;
  52.       
  53.       public function CutsceneState()
  54.       {
  55.          person = [];
  56.          personZSort = [];
  57.          adjustments = [];
  58.          dialogue = [];
  59.          decisions = [];
  60.          buffer = [];
  61.          personOverride = [];
  62.          index = 0;
  63.          currentScene = null;
  64.          super();
  65.       }
  66.       
  67.       public static function fromXML(param1:XML, param2:MovieClip) : CutsceneState
  68.       {
  69.          var _loc3_:CutsceneState = null;
  70.          var _loc4_:* = undefined;
  71.          var _loc5_:XML = null;
  72.          var _loc6_:XML = null;
  73.          var _loc7_:XML = null;
  74.          var _loc8_:CutsceneDecision = null;
  75.          var _loc9_:CutsceneDialogue = null;
  76.          _loc3_ = new CutsceneState();
  77.          _loc4_ = param1.People.elements().length();
  78.          for each(_loc5_ in param1.People.elements())
  79.          {
  80.             _loc3_.person.push(_loc5_.@name);
  81.             _loc3_.addAdjustments(_loc5_.@name,_loc5_.@xAdjust,_loc5_.@yAdjust,_loc5_.@flipX == "true",_loc5_.@flipY == "true",_loc4_--);
  82.          }
  83.          for each(_loc6_ in param1.Decisions.elements())
  84.          {
  85.             _loc8_ = CutsceneDecision.fromXML(_loc6_,param2);
  86.             _loc3_.decisions[_loc8_.name] = _loc8_;
  87.          }
  88.          for each(_loc7_ in param1.Dialogues.elements())
  89.          {
  90.             _loc9_ = CutsceneDialogue.fromXML(_loc7_,param2);
  91.             _loc3_.dialogue.push(_loc9_);
  92.          }
  93.          _loc3_.name = param1.@name;
  94.          _loc3_.defaultResolve = param1.@defaultResolve;
  95.          _loc3_.bg = param1.Background.@imagename;
  96.          _loc3_.bgMusic = param1.Background.@soundname;
  97.          _loc3_.isLoop = param1.Background.@isSoundLoop;
  98.          _loc3_.isDialogueBoxInvisible = !(param1.@isDialogueBoxInvisible.toString() == "" || param1.@isDialogueBoxInvisible.toString() == "false");
  99.          return _loc3_;
  100.       }
  101.       
  102.       public function get IsDialogueBoxInvisible() : Boolean
  103.       {
  104.          return isDialogueBoxInvisible;
  105.       }
  106.       
  107.       public function addPersonOverride(param1:String, param2:String, param3:DisplayObject) : *
  108.       {
  109.          personOverride.push(param1);
  110.          personOverride.push(param2);
  111.          personOverride.push(param3);
  112.       }
  113.       
  114.       public function overridePerson(param1:String, param2:String, param3:DisplayObject) : *
  115.       {
  116.          var _loc4_:* = undefined;
  117.          var _loc5_:DisplayObject = null;
  118.          _loc4_ = 0;
  119.          while(_loc4_ < person.length)
  120.          {
  121.             if(param1 == person[_loc4_])
  122.             {
  123.                person[_loc4_] = param2;
  124.             }
  125.             _loc4_++;
  126.          }
  127.          _loc5_ = currentScene.getChildByName(param2);
  128.          currentScene.removeChild(_loc5_);
  129.          param3.x = _loc5_.x;
  130.          param3.y = _loc5_.y;
  131.          buffer[param1] = null;
  132.          buffer[param2] = param3;
  133.          currentScene.addChild(param3);
  134.       }
  135.       
  136.       public function get CurrentDialogue() : CutsceneDialogue
  137.       {
  138.          return dialogue[index];
  139.       }
  140.       
  141.       public function get BG() : String
  142.       {
  143.          return bg;
  144.       }
  145.       
  146.       public function getDecision(param1:String) : CutsceneDecision
  147.       {
  148.          return decisions[param1];
  149.       }
  150.       
  151.       public function getPerson(param1:String) : MovieClip
  152.       {
  153.          return buffer[param1];
  154.       }
  155.       
  156.       public function nextPage() : int
  157.       {
  158.          if(CurrentDialogue.hasDecision())
  159.          {
  160.             return -1;
  161.          }
  162.          ++index;
  163.          if(index < dialogue.length)
  164.          {
  165.             return CurrentDialogue.initializeDialogue(resource,this);
  166.          }
  167.          return 0;
  168.       }
  169.       
  170.       public function get BGMusic() : String
  171.       {
  172.          return bgMusic;
  173.       }
  174.       
  175.       public function loadCutscene(param1:MovieClip, param2:ResourceManager) : int
  176.       {
  177.          var _loc3_:Array = null;
  178.          var _loc4_:Sound = null;
  179.          var _loc5_:Class = null;
  180.          var _loc6_:* = undefined;
  181.          var _loc7_:String = null;
  182.          var _loc8_:DisplayObject = null;
  183.          _loc3_ = [];
  184.          _loc4_ = param2.getResource(BGMusic,ResourceManager.C_SOUND);
  185.          currentScene = param1;
  186.          _loc6_ = 0;
  187.          while(_loc6_ < person.length)
  188.          {
  189.             _loc5_ = getDefinitionByName(person[_loc6_]) as Class;
  190.             if(_loc3_[person[_loc6_]] != null)
  191.             {
  192.                _loc3_[person[_loc6_]] = null;
  193.             }
  194.             _loc3_[person[_loc6_]] = new _loc5_() as MovieClip;
  195.             _loc6_++;
  196.          }
  197.          for(_loc7_ in _loc3_)
  198.          {
  199.             if(_loc3_[_loc7_] != null)
  200.             {
  201.                if(!(_loc3_[_loc7_] is Bitmap))
  202.                {
  203.                   if(_loc3_[_loc7_] is MovieClip)
  204.                   {
  205.                      trace("arrData[key]" + _loc7_);
  206.                      _loc8_ = _loc3_[_loc7_];
  207.                      param1.addChild(_loc8_);
  208.                      if(adjustments[_loc7_ + "xFlip"] == true)
  209.                      {
  210.                         _loc8_.scaleX *= -1;
  211.                      }
  212.                      _loc8_.x = adjustments[_loc7_ + "xOffset"];
  213.                      _loc8_.y = adjustments[_loc7_ + "yOffset"];
  214.                      buffer[_loc7_] = _loc8_;
  215.                   }
  216.                }
  217.             }
  218.          }
  219.          for(_loc7_ in buffer)
  220.          {
  221.             if(buffer[_loc7_] is MovieClip)
  222.             {
  223.                param1.setChildIndex(buffer[_loc7_],adjustments[_loc7_ + "zOrder"]);
  224.             }
  225.          }
  226.          if(this.bgMusic != null && _loc4_ != null)
  227.          {
  228.             SoundManager.getInstance().playSoundFromRes(this.bgMusic,_loc4_,SoundObject.C_BG);
  229.          }
  230.          if(resource == null)
  231.          {
  232.             resource = param2;
  233.          }
  234.          return CurrentDialogue.initializeDialogue(param2,this);
  235.       }
  236.       
  237.       public function unloadCutscene(param1:Boolean) : *
  238.       {
  239.          var _loc2_:* = undefined;
  240.          for each(_loc2_ in buffer)
  241.          {
  242.             currentScene.removeChild(_loc2_);
  243.          }
  244.          buffer = new Array();
  245.          currentScene = null;
  246.          if(param1)
  247.          {
  248.             resource.purgeAllResources();
  249.          }
  250.       }
  251.       
  252.       public function get Name() : String
  253.       {
  254.          return name;
  255.       }
  256.       
  257.       public function get DefaultResolve() : String
  258.       {
  259.          return defaultResolve;
  260.       }
  261.       
  262.       public function loadBG(param1:MovieClip) : *
  263.       {
  264.          if(bg != "")
  265.          {
  266.             buffer[bg] = new Bitmap(MainDocument.BackgroundPackage.getImage(bg));
  267.             param1.addChild(buffer[bg]);
  268.          }
  269.       }
  270.       
  271.       public function addAdjustments(param1:String, param2:int = 0, param3:int = 0, param4:Boolean = false, param5:Boolean = false, param6:* = 0) : *
  272.       {
  273.          adjustments[param1 + "xOffset"] = param2;
  274.          adjustments[param1 + "yOffset"] = param3;
  275.          adjustments[param1 + "xFlip"] = param4;
  276.          adjustments[param1 + "yFlip"] = param5;
  277.          adjustments[param1 + "zOrder"] = param6;
  278.       }
  279.    }
  280. }
  281.